diff options
| author | Ariel Costas Guerrero <94913521+arielcostas@users.noreply.github.com> | 2024-08-21 10:10:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-21 10:10:38 +0200 |
| commit | dd23cbd8a1caf00f0b842aff514d2907d545a403 (patch) | |
| tree | 8fe6ba45871480f4fd352e567cae0b66ca4ccd04 /src/pages/blog/[slug].astro | |
| parent | 553f8739ebd00110f649ce10440f1029766725a7 (diff) | |
Bring back the blog
Diffstat (limited to 'src/pages/blog/[slug].astro')
| -rw-r--r-- | src/pages/blog/[slug].astro | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/pages/blog/[slug].astro b/src/pages/blog/[slug].astro new file mode 100644 index 0000000..a1a0532 --- /dev/null +++ b/src/pages/blog/[slug].astro @@ -0,0 +1,55 @@ +---
+import type { GetStaticPaths } from "astro";
+import Layout from "../../layouts/Layout.astro";
+import { getCollection } from "astro:content";
+export const getStaticPaths = (async () => {
+ const entries = await getCollection("blog");
+ return entries.map((entry) => ({
+ params: { slug: entry.slug },
+ props: { entry },
+ }));
+}) satisfies GetStaticPaths;
+const { entry } = Astro.props;
+const { Content } = await entry.render();
+const formattedDate = new Date(entry.data.publishedAt).toLocaleDateString(
+ "es-ES",
+ {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ weekday: "long",
+ },
+);
+const schema = {
+ "@context": "https://schema.org",
+ "@type": "BlogPosting",
+ headline: entry.data.title,
+ datePublished: entry.data.publishedAt.toISOString(),
+ author: {
+ "@type": "Person",
+ name: "Ariel Costas Guerrero",
+ },
+ publisher: {
+ "@type": "Person",
+ name: "Ariel Costas Guerrero",
+ logo: {
+ "@type": "ImageObject",
+ url: "https://www.costas.dev/favicon.png",
+ },
+ },
+};
+---
+
+<Layout title={entry.data.title} description={entry.data.metaDescription}>
+ <script type="application/ld+json" slot="head-jsonld" set:html={JSON.stringify(schema)}></script>
+
+ <h1>{entry.data.title}</h1>
+ <small>
+ Publicado el
+ <time datetime={entry.data.publishedAt.toISOString()}>
+ {formattedDate}
+ </time>
+ </small>
+
+ <Content />
+</Layout>
|
